using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("BnetPlayer")]
	public class BnetPlayer : MonoClass
	{
		public BnetAccount m_account => method_3<BnetAccount>("m_account");

		public BnetGameAccount m_hsGameAccount => method_3<BnetGameAccount>("m_hsGameAccount");

		public BnetGameAccount m_bestGameAccount => method_3<BnetGameAccount>("m_bestGameAccount");

		public bool IsCheatPlayer => method_11<bool>("get_IsCheatPlayer", Array.Empty<object>());

		public string ShortSummary => method_13("get_ShortSummary");

		public string FullPresenceSummary => method_13("get_FullPresenceSummary");

		public BnetPlayer(IntPtr address, string className)
			: base(address, className)
		{
		}

		public BnetPlayer(IntPtr address)
			: this(address, "BnetPlayer")
		{
		}

		public BnetPlayer Clone()
		{
			return method_14<BnetPlayer>("Clone", Array.Empty<object>());
		}

		public BnetAccount GetAccount()
		{
			return method_14<BnetAccount>("GetAccount", Array.Empty<object>());
		}

		public void SetAccount(BnetAccount account)
		{
			method_8("SetAccount", account);
		}

		public string GetFullName()
		{
			return method_13("GetFullName");
		}

		public BnetBattleTag GetBattleTag()
		{
			return method_14<BnetBattleTag>("GetBattleTag", Array.Empty<object>());
		}

		public void AddGameAccount(BnetGameAccount gameAccount)
		{
			method_8("AddGameAccount", gameAccount);
		}

		public BnetGameAccount GetHearthstoneGameAccount()
		{
			return method_14<BnetGameAccount>("GetHearthstoneGameAccount", Array.Empty<object>());
		}

		public BnetGameAccount GetBestGameAccount()
		{
			return method_14<BnetGameAccount>("GetBestGameAccount", Array.Empty<object>());
		}

		public bool IsDisplayable()
		{
			return method_11<bool>("IsDisplayable", Array.Empty<object>());
		}

		public BnetGameAccount GetFirstGameAccount()
		{
			return method_14<BnetGameAccount>("GetFirstGameAccount", Array.Empty<object>());
		}

		public long GetPersistentGameId()
		{
			return method_11<long>("GetPersistentGameId", Array.Empty<object>());
		}

		public string GetBestName()
		{
			return method_13("GetBestName");
		}

		public string GetBestRichPresence()
		{
			return method_13("GetBestRichPresence");
		}

		public bool IsOnline()
		{
			return method_11<bool>("IsOnline", Array.Empty<object>());
		}

		public bool IsAway()
		{
			return method_11<bool>("IsAway", Array.Empty<object>());
		}

		public bool IsBusy()
		{
			return method_11<bool>("IsBusy", Array.Empty<object>());
		}

		public bool IsAppearingOffline()
		{
			return method_11<bool>("IsAppearingOffline", Array.Empty<object>());
		}

		public long GetBestAwayTimeMicrosec()
		{
			return method_11<long>("GetBestAwayTimeMicrosec", Array.Empty<object>());
		}

		public long GetBestLastOnlineMicrosec()
		{
			return method_11<long>("GetBestLastOnlineMicrosec", Array.Empty<object>());
		}

		public bool HasMultipleOnlineGameAccounts()
		{
			return method_11<bool>("HasMultipleOnlineGameAccounts", Array.Empty<object>());
		}

		public int GetNumOnlineGameAccounts()
		{
			return method_11<int>("GetNumOnlineGameAccounts", Array.Empty<object>());
		}

		public List<BnetGameAccount> GetOnlineGameAccounts()
		{
			return method_14<Class271<BnetGameAccount>>("GetOnlineGameAccounts", Array.Empty<object>())?.method_25();
		}

		public void OnGameAccountChanged(uint fieldId)
		{
			method_8("OnGameAccountChanged", fieldId);
		}

		public new string ToString()
		{
			return method_13("ToString");
		}

		public void CacheSpecialGameAccounts()
		{
			method_8("CacheSpecialGameAccounts");
		}
	}
}
